package com.budwk.app.sqfw.services;

import com.budwk.app.sqfw.dto.*;
import com.budwk.app.sqfw.models.Sqfw_formSummary;
import com.budwk.app.sqfw.vo.HouseSurveyFormPlaceVO;
import com.budwk.app.sqfw.vo.SqfwFormSummaryUnitInfoVO;
import com.budwk.app.sqfw.vo.Sqfw_formSummaryForAdminVO;
import com.budwk.starter.common.result.Result;
import com.budwk.starter.database.service.BaseService;
import org.bson.json.JsonObject;
import org.nutz.dao.Cnd;

import java.util.List;

/**
 * @author ZY.Wang
 * @since 2023/7/17
 */
public interface SqfwSummaryForAdminService extends BaseService<Sqfw_formSummary> {

    /**
     * 根据表单数据查询场所信息
     *
     * @param checkPlaceName 场所名称
     * @return 表单单位名称
     */
    List<String> listUnitPlaceName(String unitId, String type, String checkPlaceName, String returnKey);

    /**
     * 根据表单数据查询场所信息
     *
     * @param checkPlaceName 场所名称
     * @return 表单单位名称
     */
    List<JsonObject> listUnitPlaceInfoMulti(String unitId, String type, String checkPlaceName, String returnKey);

    /**
     * 根据场所名称获取场所详细信息
     *
     * @param unitNameStr 场所名称
     * @return 结果
     */
    SqfwFormSummaryUnitInfoVO getUnitPlaceLatestInfo(String unitNameStr, String unitId);

    /**
     * 根据场所名称获取场所详细信息
     *
     * @param id 服务记录id
     * @return 结果
     */
    SqfwFormSummaryUnitInfoVO getUnitPlaceLatestInfoById(String id);

    /**
     * 根据工作流id重新生成pdf
     *
     * @param userId     用户id
     * @param sqfwFlowId 工作流id
     */
    void retryGenerateFireHiddenPdf(String userId, String sqfwFlowId);

    /**
     * 根据服务记录id生成排查Excel
     *
     * @param sqfwId 服务记录id
     * @return excel的url
     */
    String generateFireHiddenCollectionExcelForApp(String downType, String sqfwId, String workOrderId, String userId, Integer fileIndex);

    /**
     * 消防安全排查发送同行人消息
     *
     * @param dto 消息DTO
     * @return 发送条数
     */
    Integer sendFireHiddenPeersMsg(FireHiddenPeersMsgDTO dto);

    /**
     * 根据服务记录id生成pdf合集
     *
     * @param sqfwId      服务记录id
     * @param workOrderId 工单id
     * @return 结果
     */
    String generateFormSummaryPdfConverge(String sqfwId, String workOrderId, String fileType);

    /**
     * 生成垃圾分类调查表PDF
     *
     * @param userId              用户id
     * @param formSummaryWithFlow 表单数据
     */
    void generateRefuseClassifyPdf(String userId, SqfwFormSummaryWithFlowDTO formSummaryWithFlow);

    /**
     * 生成垃圾分类Excel
     *
     * @param sqfwId 社区服务id
     * @return 结果
     */
    String generateRefuseClassifyExcelForApp(String sqfwId);

    /**
     * 重新生成垃圾分类的pdf
     *
     * @param userId     用户id
     * @param sqfwFlowId 工作流id
     */
    void retryGenerateRefuseClassifyPdf(String userId, String sqfwFlowId);

    /**
     * 根据栋号和户号查询 入户地点信息
     *
     * @param unitId 社区单位id
     * @param a5     户号
     * @param a4     栋号
     * @return 结果
     */
    List<HouseSurveyFormPlaceVO> listPlaceForHouseSurveyFrom(String unitId, String workOrderId, String userId, String a5, String a4);


    /**
     * 生成入户调查表PDF
     *
     * @param userId              用户id
     * @param formSummaryWithFlow 表单数据
     */
    void generateHouseSurveyFormPdf(String userId, SqfwFormSummaryWithFlowDTO formSummaryWithFlow);

    /**
     * 根据服务id查询能够下载的excel种类
     *
     * @param sqfwId 社区服务id
     * @return 结果
     */
    List<String> getDownloadHouseSurveyFormExcelType(String sqfwId);

    /**
     * 生成入户调查表Excel
     *
     * @param sumIdList 服务记录id
     * @param excelType excel的类型
     * @return 结果
     */
    String generateHouseSurveyFormExcelForAdmin(String downType, List<String> sumIdList, String excelType, String fileNameSuffix);

    /**
     * 重新生成入户调查表pdf
     *
     * @param userId     用户id
     * @param sqfwFlowId 工作流id
     */
    void retryGenerateHouseSurveyFormPdf(String userId, String sqfwFlowId);

    /**
     * 根据服务记录id需要二次调查的数据
     *
     * @param sqfwId 服务记录id
     * @return 结果
     */
    List<HouseSurveyFormPlaceVO> listSecondHouseSurvey(String sqfwId, String userId);

    /**
     * 生成任务pdf的集合
     *
     * @param conditionList 条件list
     * @return pdf链接
     */
    String generateServiceRecordPdfColl(List<SqfwSummaryPdfExcelCollForAdminDTO> conditionList);

    /**
     * 生成excel
     *
     * @param conditionList 条件list
     * @param userId        用户id
     * @param fileIndex     文件索引
     * @param excelType     文件类型
     * @return 结果
     */

    /**
     * 根据summaryId下载Excel集合（后台管理系统）
     * Add by LJT 2023-10-10
     */
    String generateServiceRecordExcelCollForBM(String downType, List<String> sumIdList, String userId, String fileType, Integer fileIndex);

    /**
     * 根据sqfwId下载Excel集合Zip（后台管理系统）
     * Add by LJT 2023-10-10
     */
    String generateServiceRecordExcelCollZipForBM(String county, List<ServiceRecordPdfOrExcelCollDTO> conditionList, String userId, List<Integer> fileIndexList, String excelType);

    /**
     * 根据summaryId下载Excel集合Zip（后台管理系统）
     * Add by LJT 2023-10-10
     */
    String generateServiceSummaryExcelCollZipForBM(String type, String county, List<String> sumIds, String userId, List<Integer> fileIndexList, String excelType, String... queryTime);

    List<String> getDaYingLuExcelFileDownSumIdList(Sqfw_formSummaryForAdminVO bean);

    List<String> getWeiQingMenExcelFileDownSumIdList(Sqfw_formSummaryForAdminVO bean);

    List<Integer> checkDataForQuery(Sqfw_formSummaryForAdminVO bean);

    List<Integer> checkDataForIds(List<String> ids);

    List<SqfwSummaryPdfExcelCollForAdminDTO> getDaYingLuPdfFileDownSumIdList(Sqfw_formSummaryForAdminVO bean);

    List<SqfwSummaryPdfExcelCollForAdminDTO> getWeiQingmenPdfFileDownSumIdList(Sqfw_formSummaryForAdminVO bean);

    /**
     * 生成任务pdf的集合
     *
     * @param conditionList 条件list
     * @return pdf链接
     */
    String generateServiceRecordToPdfColl(List<ServiceRecordPdfOrExcelCollDTO> conditionList);

    /**
     * 公共获取pdf和excel的sumId列表
     *
     * @param sqlStr
     * @param type
     */
    List<SqfwSummaryPdfExcelCollForAdminDTO> getPdfExcelFileDownSumIdList(String sqlStr, String type);

    /**
     * @param downType
     * @param conditionList
     * @param userId
     * @param fileIndex
     * @param excelType
     * @return
     */
    String generateCheckRecordExcelColl(String downType, List<SqfwSummaryPdfExcelCollForAdminDTO> conditionList, String userId, Integer fileIndex, String excelType);

    /**
     * 威清门生成pdf文档（多种模板可选）
     *
     * @param userId
     * @param summaryIdList
     * @param fileType
     * @param index
     * @return
     */
    String generateAppointPdfConverge(String userId, List<String> summaryIdList, String fileType, int index);

    /**
     * 威清门列表查询
     *
     * @param bean
     * @param pageNo
     * @param pageSize
     * @param pageOrderName
     * @param pageOrderBy
     * @return
     */
    Result<?> listSummaryWQMForBM(Sqfw_formSummaryForAdminVO bean, int pageNo, int pageSize, String pageOrderName, String pageOrderBy);

    /**
     * 构建查询条件
     *
     * @param bean
     * @return
     */

    Cnd buildWQMQueryParam(Sqfw_formSummaryForAdminVO bean);

    /**
     * 打大营路列表查询
     *
     * @param bean
     * @param pageNo
     * @param pageSize
     * @param pageOrderName
     * @param pageOrderBy
     * @return
     */
    Result<?> listSummaryDYLForBM(Sqfw_formSummaryForAdminVO bean, int pageNo, int pageSize, String pageOrderName, String pageOrderBy);

    /**
     * 构建大营列表查询条件
     *
     * @param bean
     * @return
     */
    Cnd buildDYLQueryParam(Sqfw_formSummaryForAdminVO bean);


    /**
     * 下载/检测威清门excel
     *
     * @param dto
     * @param sumIds
     * @param queryTime
     * @return
     */
    String weiQingMenStreetFireHiddenExcel(FireHiddenExcelParamWeiQingMenSQDTO dto, List<String> sumIds,String isCheckData ,String... queryTime);

    /**
     * 更新summary表信息
     * @param sqfwFormSummaryVO
     */
    void updateSummaryInfo(Sqfw_formSummaryForAdminVO sqfwFormSummaryVO);
}
